package com.linshengjian.core;

import java.io.Serializable;
import java.util.List;

public interface IBaseService<M extends BaseModel, ID extends Serializable> {
    /**
     * 新增
     * @param model
     * @return
     */
    M add(M model) throws BusinessException;

    /**
     * 更新
     * @param model
     * @return
     */
    M update(M model) throws BusinessException;

    /**
     * 根据ID删除
     * @param id
     */
    void delete(ID id) throws BusinessException;

    /**
     * 根据model的内容进行查询删除
     * @param model
     */
    void delete(M model) throws BusinessException;

    /**
     * 根据ID删除
     * @param id
     * @return
     */
    M get(ID id);

    /**
     * 根据model内容进行删除
     * @param model
     * @return
     */
    M get(M model);

    /**
     * 获取所有的
     * @return
     */
    List<M> list();

    /**
     * 根据条件进行查询
     * @param model
     * @return
     */
    List<M> list(M model);

    /**
     * 分页获取所有
     * @param pageReq
     * @return
     */
    PageResp<M> list(PageReq pageReq);

    /**
     * 分页进行查询
     * @param model
     * @param pageReq
     * @return
     */
    PageResp<M> list(M model, PageReq pageReq);
}
